﻿namespace CSharpPro._1106;

//
using System;
using System.Collections.Generic;

/// <summary>
/// 用户服务实现类，实现接口定义的所有功能
/// </summary>
public class UserService : IUserService
{
    // 泛型集合存储用户信息（使用List<T>泛型）
    private readonly List<User> _userList = new List<User>();

    /// <summary>
    /// 注册实现：使用foreach循环检查用户名是否存在
    /// </summary>
    public bool Register(string username, string password)
    {
        // 验证输入
        if (string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(password))
        {
            Console.WriteLine("注册失败：用户名和密码不能为空！");
            return false;
        }

        // foreach循环迭代检查重复
        foreach (var user in _userList)
        {
            if (user.Username.Equals(username, StringComparison.OrdinalIgnoreCase))
            {
                Console.WriteLine("注册失败：用户名已存在！");
                return false;
            }
        }

        // 添加新用户到泛型集合
        _userList.Add(new User(username, password));
        Console.WriteLine("注册成功！");
        return true;
    }

    /// <summary>
    /// 登录实现：使用foreach循环验证用户信息
    /// </summary>
    public bool Login(string username, string password)
    {
        foreach (var user in _userList)
        {
            if (user.Username == username && user.Password == password)
            {
                Console.WriteLine("登录成功！");
                return true;
            }
        }

        Console.WriteLine("登录失败：用户名或密码错误！");
        return false;
    }

    /// <summary>
    /// 删除用户：使用for循环避免迭代中修改集合异常
    /// </summary>
    public bool DeleteUser(string username)
    {
        // for循环遍历（删除操作需用for循环）
        for (int i = 0; i < _userList.Count; i++)
        {
            if (_userList[i].Username == username)
            {
                _userList.RemoveAt(i);
                Console.WriteLine("删除成功！");
                return true;
            }
        }

        Console.WriteLine("删除失败：用户不存在！");
        return false;
    }

    /// <summary>
    /// 显示所有用户：使用foreach循环迭代
    /// </summary>
    public void ShowAllUsers()
    {
        if (_userList.Count == 0)
        {
            Console.WriteLine("当前没有注册用户！");
            return;
        }

        Console.WriteLine("\n===== 注册用户列表 =====");
        foreach (var user in _userList)
        {
            Console.WriteLine($"用户名：{user.Username}");
        }
    }

    /// <summary>
    /// 系统主流程控制
    /// </summary>
    public void StartSystem()
    {
        while (true)
        {
            Console.WriteLine("\n===== 用户管理系统 =====");
            Console.WriteLine("1. 注册新用户");
            Console.WriteLine("2. 用户登录");
            Console.WriteLine("3. 查看所有用户");
            Console.WriteLine("4. 删除用户");
            Console.WriteLine("5. 退出系统");
            Console.Write("请选择操作(1-5)：");

            // 处理用户输入
            if (!int.TryParse(Console.ReadLine(), out int choice) || choice < 1 || choice > 5)
            {
                Console.WriteLine("输入无效，请重新选择！");
                continue;
            }

            switch (choice)
            {
                case 1:
                    Console.Write("请输入注册用户名：");
                    string regUser = Console.ReadLine();
                    Console.Write("请输入注册密码：");
                    string regPwd = Console.ReadLine();
                    Register(regUser, regPwd);
                    break;
                case 2:
                    Console.Write("请输入登录用户名：");
                    string loginUser = Console.ReadLine();
                    Console.Write("请输入登录密码：");
                    string loginPwd = Console.ReadLine();
                    Login(loginUser, loginPwd);
                    break;
                case 3:
                    ShowAllUsers();
                    break;
                case 4:
                    Console.Write("请输入要删除的用户名：");
                    string delUser = Console.ReadLine();
                    DeleteUser(delUser);
                    break;
                case 5:
                    Console.WriteLine("系统已退出，再见！");
                    return;
            }
        }
    }
}